home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Everything For A Hacker
/
19990506-[HACK].iso
/
SECURE
/
CRYPT
/
GOST.ZIP
/
MAKE1KEY.C
< prev
next >
Wrap
C/C++ Source or Header
|
1995-02-21
|
3KB
|
107 lines
/*-----------------------------------------------------
Make1Key.c -- óδαáí«Γ¬á «ñ¡«ú« ¬α¿»Γ«úαáΣ¿τÑ߬«ú«
¬½ετá ß »«¼«Θ∞ε "φ½Ñ¬Γα«¡¡«⌐ απ½ÑΓ¬¿"
-----------------------------------------------------
Éáºαáí«Γá½ Ç.₧.é¿¡«¬πα«ó, ú.î«ß¬óá, ΣÑóαá½∞ 1995 ú.
(c) 1995, æó«í«ñ¡«Ñ ¿ß»«½∞º«óá¡¿Ñ ¿ ¬«»¿α«óá¡¿Ñ.
-----------------------------------------------------
¥Γá »α«úαá¼¼á ߻ѵ¿á½∞¡« αáºαáí«Γá¡á ñ½∩ »πí½¿¬áµ¿¿
ó "î«¡¿Γ«αÑ".
-----------------------------------------------------
*/
#pragma inline
#include <conio.h> // kbhit,getch
#include <dos.h> // delay
#include <stdio.h> // printf,fopen,fclose,putc,...
#include <stdlib.h> // atoi
unsigned char port61h;
// Åα«Γ«Γ¿»δ Σπ¡¬µ¿⌐
void timer2(unsigned short count);
unsigned short get2channel(void);
// â½áó¡á∩ »α«úαá¼¼á
int main(int argc, char *argv[])
{
printf("Åα«úαá¼¼á óδαáí«Γ¬¿ 1 ¬½ετá ß »«¼«Θ∞ε "
"φ½Ñ¬Γα«¡¡«ú« á¡á½«úá απ½ÑΓ¬¿.\n"
"æ«ßΓáó¿½ Ç.₧.é¿¡«¬πα«ó, ∩¡óáα∞ 1995 ú«ñá,"
" ßó«í«ñ¡«Ñ ¿ß»«½∞º«óá¡¿Ñ ¿ ¬«»¿α«óá¡¿Ñ\n");
if ( argc < 2 || argc > 3 )
return printf(
"諼á¡ñá ºá»π߬á: \"make1key Σá⌐½ [ñ½¿¡á]\" ,úñÑ:\n"
" Σá⌐½ - ¿¼∩ Σá⌐½á ñ½∩ ºá»¿ß¿ ¬½ετá\n"
" ñ½¿¡á - ñ½¿¡á ¬½ετá ó íá⌐Γáσ, »« π¼«½τá¡¿ε - 32\n"
),-1;
else
{
unsigned short length=32;
FILE *key=fopen(argv[1],"wb");
if(!key)
{
printf(
"ìÑ ¼«úπ «Γ¬αδΓ∞ Σá⌐½ ¬½ετá \"%s\" ñ½∩ ºá»¿ß¿\n",
argv[1]);
return 1;
}
if (argc==3) length=atoi(argv[2]);
timer2(256);
printf("ìᪿ¼á⌐ ¡á ½εíδÑ ¬½áó¿Φδ :");
while(length--)
{
while (delay(300),kbhit())
getch(),putchar('\007'),timer2(256);
getch();
if (putc(get2channel(),key)==EOF)
return printf("ÄΦ¿í¬á ¡á Σá⌐½Ñ ¬½ετá\n"),1;
putchar('.');
}
asm {
mov AL,port61h
out 0x61,AL
}
putchar('\n');
return fclose(key) ?
(printf("ÄΦ¿í¬á ¡á Σá⌐½Ñ ¬½ετá\n"),1) :
(printf("è½ετ ßúÑ¡Ñα¿α«óá¡\n"),0) ;
}
}
// »α«µÑñπαá »α«úαá¼¼¿α«óá¡¿∩ 2 ¬á¡á½á Γá⌐¼Ñαá
void timer2(unsigned short count)
{
asm {
mov AL,0xb4 // çáúαπªáѼ ó Γá⌐¼Ñα
out 0x43,AL // π»αáó½∩εΘÑÑ ß½«ó«
mov AX,count// AX <- ¼½áñΦ¿⌐ íá⌐Γ ¬«¡ßΓá¡Γδ
out 0x42,AL // ºáúαπªáѼ ¼½áñΦ¿⌐ íá⌐Γ ó Γá⌐¼Ñα
mov AL,AH // AL <- ßΓáαΦ¿⌐ íá⌐Γ ¬«¡ßΓá¡Γδ
out 0x42,AL // ºáúαπªáѼ ßΓáαΦ¿⌐ íá⌐Γ ó Γá⌐¼Ñα
in AL,0x61 // AL <- ß«ßΓ«∩¡¿Ñ »«αΓá 61h
mov port61h,AL // ß«σαá¡∩Ѽ ß«ßΓ«∩¡¿Ñ
or AL,1 // αáºαÑΦáѼ αáí«Γπ 2 ¬á¡á½á
out 0x61,AL // ...
}
return;
}
// »α«µÑñπαá ßτ¿Γδóá¡¿∩ »«¬áºá¡¿∩ 2 ¬á¡á½á Γá⌐¼Ñαá
unsigned short get2channel(void)
{
asm {
mov AL,0x86 // Σ¿¬ß¿απѼ ñá¡¡δÑ
out 0x43,AL // 2-ú« ¬á¡á½á Γá⌐¼Ñαá
jmp inpt // ¡á óß∩¬¿⌐ ß½πτá⌐
}
inpt: asm {
in AL,0x42 // ßτ¿ΓδóáѼ ¼½áñΦ¿⌐ íá⌐Γ
mov AH,AL // «ßó«í«ªñáѼ AL
in AL,0x42 // ßτ¿ΓδóáѼ ßΓáαΦ¿⌐ íá⌐Γ
xchg AH,AL // íá⌐Γδ ó «íαáΓ¡«¼ »«α∩ñ¬Ñ
}
return _AX;
}